package it.uiip.crm.model;

import java.util.ArrayList;
import java.util.List;

public class Utente {
	private Long id;
	private boolean tipoUtente;
	private Anagrafica anagrafica;
	private String email, password, descrizione;
	private List<Utente> amici =  new ArrayList<Utente>();
	private List<Utente> amiciInSospeso =  new ArrayList<Utente>();
	private List<Post> posts =  new ArrayList<Post>();
	
	public Utente() {}
	
	public Utente(String email, String password, String descrizione,
			boolean tipoUtente, Anagrafica anagrafica,
			List<Utente> amici, List<Utente> amiciInSospeso, List<Post> posts){
		this.setEmail(email);
		this.setPassword(password);
		this.setDescrizione(descrizione);
		this.setTipoUtente(tipoUtente);
		this.setAnagrafica(anagrafica);
		this.setAmici(amici);
		this.setAmiciInSospeso(amiciInSospeso);
		this.setPosts(posts);
	}

	public Utente(Long id, String email, String password, String descrizione,
			boolean tipoUtente, Anagrafica anagrafica,
			List<Utente> amici, List<Utente> amiciInSospeso, List<Post> posts){
		this.setId(id);
		this.setEmail(email);
		this.setPassword(password);
		this.setDescrizione(descrizione);
		this.setTipoUtente(tipoUtente);
		this.setAnagrafica(anagrafica);
		this.setAmici(amici);
		this.setAmiciInSospeso(amiciInSospeso);
		this.setPosts(posts);
	}
	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getEmail() {
		return email;
	}
	
	public void setEmail(String email) {
		this.email = email;
	}
	
	public String getPassword() {
		return password;
	}
	
	public void setPassword(String password) {
		this.password = password;
	}
	
	public String getDescrizione() {
		return descrizione;
	}

	public void setDescrizione(String descrizione) {
		this.descrizione = descrizione;
	}
	
	public Anagrafica getAnagrafica() {
		return anagrafica;
	}
	
	public void setAnagrafica(Anagrafica anagrafica) {
		this.anagrafica = anagrafica;
	}

	public List<Utente> getAmici() {
		return amici;
	}

	public void setAmici(List<Utente> amici) {
		this.amici = amici;
	}

	public List<Utente> getAmiciInSospeso() {
		return amiciInSospeso;
	}

	public void setAmiciInSospeso(List<Utente> amiciInSospeso) {
		this.amiciInSospeso = amiciInSospeso;
	}

	public List<Post> getPosts() {
		return posts;
	}

	public void setPosts(List<Post> posts) {
		this.posts = posts;
	}

	public void addAmici(Utente utente) {
		amici.add(utente);
	}

	public void addAmiciInSospeso(Utente utente) {
		amiciInSospeso.add(utente);
	}
	
	public void addPosts(Post post) {
		posts.add(post);
	}

	public boolean isTipoUtente() {
		return tipoUtente;
	}

	public void setTipoUtente(boolean tipoUtente) {
		this.tipoUtente = tipoUtente;
	}

	@Override
	public String toString() {
		return "ID: " + id + "\n" + "Email: " + email + "\n" + "Password: " + password + "\n"
		+ "Descrizione: " + descrizione + "\n" + "Anagrafica: " + anagrafica + "\n" + "Amici: "
		+ amici.size() + "\n" + "Amici In Sospeso: " + amiciInSospeso.size() + "\n" + "Posts=" + posts.size()
		+ "\n";
	}
}
